/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package raccoon.suvisa.datos.fachadas.beans;

import java.util.List;
import java.util.logging.Logger;
import raccoon.suvisa.datos.fachadas.*;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import raccoon.suvisa.datos.entities.Usuario;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.ArrayList;
import raccoon.suvisa.datos.entities.Control;

/**
 *
 * @author Gabriel
 */
@Stateless
public class UsuarioBean implements UsuarioRemote {

    @PersistenceContext
    private EntityManager em;

    @Override
    public Usuario getUsuario(BigDecimal idUsuario) {
        try {
            List<Usuario> lst = em.createNamedQuery("Usuario.findByIdUsuario").setParameter("idUsuario", idUsuario).getResultList();
            if (!lst.isEmpty()) {
                Usuario u = lst.get(0);
                return u;
            }
        } catch (Exception e) {
            Logger.getLogger(UsuarioBean.class.getName()).info("ERROR!!!" + e.getMessage());
        }
        return null;
    }

    @Override
    public BigDecimal guardarNuevoUsuario(Usuario u) {
        BigInteger id = new BigInteger("0");
        try {
            List<Control> lst = em.createNamedQuery("Control.findAll").getResultList();
            if (!lst.isEmpty()) {
                Control con = lst.get(0);
                id = con.getIdUsuario();
                con.setIdUsuario(id.add(BigInteger.ONE));
                u.setIdUsuario(new BigDecimal(id.add(BigInteger.ONE).toString()));
                u.getIdUsuario();
                em.merge(con);
                em.persist(u);
            }
            return u.getIdUsuario();
        } catch (Exception e) {
            Logger.getLogger(UsuarioBean.class.getName()).info("ERROR!!!" + e.getMessage());
            return new BigDecimal(id);
        }
    }

    @Override
    public boolean actulizarUsuario(Usuario u) {
        try {
            em.merge(u);
            return true;
        } catch (Exception e) {
            Logger.getLogger(UsuarioBean.class.getName()).info("ERROR!!!" + e.getMessage());
        }
        return false;
    }

    @Override
    public boolean validarUserName(String username, String pass) {
        try {
            List lst = em.createNamedQuery("Usuario.findByUsername").setParameter("username", username).getResultList();
            if (!lst.isEmpty()) {
                Usuario u = (Usuario) lst.get(0);
                if (u.getPassword().equalsIgnoreCase(pass)) {
                    return true;
                }
            }
        } catch (Exception e) {
            Logger.getLogger(UsuarioBean.class.getName()).info("ERROR!!!" + e.getMessage());
        }
        return false;
    }

    @Override
    public String retornarUsuario(String username, String pass) {
        try {
            List lst = em.createNamedQuery("Usuario.findByUsername").setParameter("username", username).getResultList();
            if (!lst.isEmpty()) {
                Usuario u = (Usuario) lst.get(0);
                return u.getIdUsuario().toString();
            } else {
                return new BigDecimal("0").toString();
            }
        } catch (Exception e) {
            Logger.getLogger(UsuarioBean.class.getName()).info("ERROR!!!" + e.getMessage());
            return new BigDecimal("0").toString();
        }
    }

    @Override
    public List<Usuario> getAll() {
        try {
            List<Usuario> lst = em.createNamedQuery("Usuario.findAll").getResultList();
            if (!lst.isEmpty()) {

                return lst;
            }
        } catch (Exception e) {
            Logger.getLogger(UsuarioBean.class.getName()).info("ERROR!!!" + e.getMessage());
        }
        return new ArrayList<Usuario>();
    }

}
